9cd56baf00e1354157c2c96b9270bbc2a2e3c1ca,src/org/exist/storage/NativeTextEngine.java,InvertedIndex,flush,#,839

Before Change


                for (Iterator i = words[currentSection].entrySet().iterator(); i.hasNext(); count++) {
                    entry = (Map.Entry) i.next();
                    token = (String) entry.getKey();
                    occurences = (OccurrenceList) entry.getValue();
                    termCount = occurences.getTermCount();
                    //Don't forget this one
                    occurences.sort();                    
                    os.clear();
                    os.writeInt(this.doc.getDocId());
                    switch (currentSection) {
                        case TEXT_SECTION :
                            os.writeByte(TEXT_SECTION);
                            break;
                        case ATTRIBUTE_SECTION :
                            os.writeByte(ATTRIBUTE_SECTION);
                            break;
                        default :
                            throw new IllegalArgumentException("Invalid inverted index");
                    }                    
                    os.writeInt(termCount);
                    lenOffset = os.position();
                    os.writeFixedInt(0);
                    previousGID = 0;
                    for (int j = 0; j < occurences.getSize(); ) {
                        delta = occurences.nodes[j] - previousGID;
                        os.writeLong(delta);                                        
                        freq = occurences.getOccurrences(j);
                        os.writeInt(freq);
                        for (int k = 0; k < freq; k++) {
                            os.writeInt(occurences.offsets[j + k]);

After Change


                    Map.Entry entry = (Map.Entry) i.next();
                    String token = (String) entry.getKey();
                    OccurrenceList occurences = (OccurrenceList) entry.getValue();
                    int termCount = occurences.getTermCount();
                    //Don't forget this one
                    occurences.sort();                    
                    os.clear();
                    os.writeInt(this.doc.getDocId());
                    switch (currentSection) {
                        case TEXT_SECTION :
                            os.writeByte(TEXT_SECTION);
                            break;
                        case ATTRIBUTE_SECTION :
                            os.writeByte(ATTRIBUTE_SECTION);
                            break;
                        default :
                            throw new IllegalArgumentException("Invalid inverted index");
                    }                    
                    os.writeInt(termCount);
                    //TOUNDERSTAND -pb             
                    int lenOffset = os.position();
                    os.writeFixedInt(0);
                    long previousGID = 0;
                    for (int j = 0; j < occurences.getSize(); ) {
                        long delta = occurences.nodes[j] - previousGID;
                        os.writeLong(delta);                                        
                        int freq = occurences.getOccurrences(j);
                        os.writeInt(freq);
                        for (int k = 0; k < freq; k++) {
                            os.writeInt(occurences.offsets[j + k]);